package com.dragon.modules.yuegou.client.wechat.client;

import com.dragon.modules.yuegou.client.wechat.request.CreateRoomRequest;
import com.dragon.modules.yuegou.client.wechat.request.GoodsAddRequest;
import com.dragon.modules.yuegou.client.wechat.request.OpenidRequest;
import com.dragon.modules.yuegou.client.wechat.request.ReplayRequest;
import com.dragon.modules.yuegou.client.wechat.response.CreateRoomResponse;
import com.dragon.modules.yuegou.client.wechat.response.GetLiveResponse;
import com.dragon.modules.yuegou.client.wechat.response.GetgoodswarehouseResponse;
import com.dragon.modules.yuegou.client.wechat.response.GoodsAddResponse;
import com.dragon.modules.yuegou.client.wechat.response.MediaUploadResponse;
import com.dragon.modules.yuegou.client.wechat.response.OpenidResponse;
import com.dragon.modules.yuegou.client.wechat.response.ReplayResponse;
import com.dragon.modules.yuegou.client.wechat.response.UniteResponse;

import java.io.File;
import java.util.List;

/**
 * 小程序
 *
 * @author  cz@100yueoo.com
 */
public interface MiniClient {

    /**
     * 小程序jscode2session
     *
     * @param request 登录请求
     * @return 登录响应
     */
    OpenidResponse jscode2session(OpenidRequest request);
    
    
    /**
     * <p>上传多媒体文件</p>
     * @param accessToken 认证token
     * @param type 图片（image）、语音（voice）、视频（video）和缩略图（thumb）
     * @param media form-data中媒体文件标识
     * @return
     * */
    MediaUploadResponse mediaUpload(String accessToken,String type,File media);
    
    /**
     * <p>获取直播房间列表</p>
     * @param accessToken 认证token
     * @param start 起始拉取数 0 表示从第一个开始
     * @param limit 拉取上线的个数
     * @return
     * */
    GetLiveResponse getliveList(String accessToken,Integer start,Integer limit);
    
    /**
     * <p>获取直播间回放视频</p>
     * @param request
     * @return
     * */
    ReplayResponse getliveinfo(ReplayRequest request);
    
    /**
     * <p>创建直播间</p>
     * @param request
     * @return
     * */
    CreateRoomResponse createRoom(CreateRoomRequest request);

    /**
     * <p>删除直播间</p>
     * @param roomId
     * @return
     * */
    UniteResponse delRoom(String accessToken, String roomId);
    
    /**
     * <p>商品添加并提审</p>
     * @param request
     * @return
     * */
    GoodsAddResponse goodsAdd(GoodsAddRequest request);
    
    /**
     * <p>删除商品</p>
     * @param accessToken 请求验证
     * @param goodsId 商品Id
     * @return
     * */
    UniteResponse goodsDelete(String accessToken,String goodsId);
    
    /**
     * <p>获取商品信息</p>
     * @param accessToken 请求验证
     * @param goodsIds 商品Id列表
     * @return
     * */
    GetgoodswarehouseResponse getgoodswarehouse(String accessToken,List<String> goodsIds);
    
    /**
     * <p>获取商品列表</p>
     * @param accessToken 请求验证
     * @param offset 分页条数起点
     * @param limit 分页大小
     * @param status 商品状态，0：未审核。1：审核中，2：审核通过，3：审核驳回
     * @return
     * */
    GetgoodswarehouseResponse getapproved(String accessToken,Integer offset,Integer limit,Integer status);
    
    
    /**
     * <p>往指定直播间导入已入库商品</p>
     * @param accessToken 请求验证
     * @param ids 商品ID集合
     * @param roomId 直播间ID
     * @return
     * */
    UniteResponse roomAddgoods(String accessToken,List<String> ids,String roomId);

}
